//package com.bob.like.mq.consumer;
//
//import cn.hutool.core.date.DateTime;
//import cn.hutool.core.date.DateUtil;
//import com.bob.like.mapper.BlogMapper;
//import com.bob.like.mq.event.ThumbEvent;
//import com.bob.like.service.ThumbService;
//import com.bob.like.util.RedisKeyUtil;
//import lombok.RequiredArgsConstructor;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.rocketmq.common.message.MessageExt;
//import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
//import org.apache.rocketmq.spring.core.RocketMQListener;
//import org.springframework.data.redis.core.RedisTemplate;
//import org.springframework.stereotype.Service;
//import org.springframework.transaction.annotation.Transactional;
//
//import static com.alibaba.fastjson2.JSON.parseObject;
//
//@Service
//@RocketMQMessageListener(topic = "thumb-topic", consumerGroup = "thumb-group")
//@Slf4j
//@RequiredArgsConstructor
//public class ThumbConsumer implements RocketMQListener<MessageExt> {
//
//    private final BlogMapper blogMapper;
//    private final ThumbService thumbService;
//    private final RedisTemplate<String, Object> redisTemplate;
//
//    @Override
//    @Transactional(rollbackFor = Exception.class)
//    public void onMessage(MessageExt messageExt) {
//        String body = new String(messageExt.getBody());
//        ThumbEvent event = parseObject(body, ThumbEvent.class);
//
//        log.info("收到点赞事件: {}", event);
//
//        // 幂等处理：根据 userId + blogId + eventTime 判断是否已处理
//        if (isEventProcessed(event)) {
//            log.warn("该事件已处理，跳过: {}", event);
//            return;
//        }
//
//        // 获取当前时间
//        DateTime nowDate = event.getEventTime();
//        // 将秒数设置为 0
//        nowDate.setField(java.util.Calendar.SECOND, 0);
//        // 将分钟数设置为最近的整十分钟
//        int minute = nowDate.minute();
//        nowDate.setField(java.util.Calendar.MINUTE, (minute / 10) * 10);
//        // 格式化时间
//        String date = DateUtil.format(nowDate, "HH:mm:ss");
//        String tempThumbKey = RedisKeyUtil.getTempThumbKey(date);
//
//        // 更新 Redis 中的最终值
//
//
//
//        // 更新数据库
//        blogMapper.updateById();
//
//        // 标记事件已处理（可存在 Redis 或 DB）
//        markEventAsProcessed(event);
//    }
//
//    private boolean isEventProcessed(ThumbEvent event) {
//        // TODO: 实现幂等判断逻辑（例如使用 Redis Set 或 DB 记录）
//        return false;
//    }
//
//    private void markEventAsProcessed(ThumbEvent event) {
//        // TODO: 实现幂等标记逻辑
//    }
//}
